package main

import (
	"fmt"
	"strings"
)

/*
你有50枚金币，需要分配给以下几个人：Matthew,Sarah,Augustus,Heidi,Emilie,Peter,Giana,Adriano,Aaron,Elizabeth。
分配规则如下：
a. 名字中每包含1个'e'或'E'分1枚金币
b. 名字中每包含1个'i'或'I'分2枚金币
c. 名字中每包含1个'o'或'O'分3枚金币
d: 名字中每包含1个'u'或'U'分4枚金币
写一个程序，计算每个用户分到多少金币，以及最后剩余多少金币？
程序结构如下，请实现 ‘dispatchCoin’ 函数
*/

var (
	coins = 50
	users = []string{
		"Matthew", "Sarah", "Augustus", "Heidi", "Emilie", "Peter", "Giana", "Adriano", "Aaron", "Elizabeth",
	}
	distribution = make(map[string]int, len(users))
)

func dispatchCoin() int {
	for _, user := range users {
		countE := strings.Count(user, "e") + strings.Count(user, "E")
		countI := strings.Count(user, "i") + strings.Count(user, "I")
		countO := strings.Count(user, "o") + strings.Count(user, "O")
		countU := strings.Count(user, "u") + strings.Count(user, "U")
		coinsForUser := countE + 2*countI + 3*countO + 4*countU
		distribution[user] = coinsForUser
		coins -= coinsForUser
	}
	return coins
}

func main() {
	left := dispatchCoin()
	fmt.Println("每个用户分到的金币数量", distribution)
	fmt.Println("剩下：", left)
}

/*
思路：

可以按照以下步骤实现 dispatchCoin 函数：

1. 遍历 users 切片中的每个用户名。
2. 对于每个用户名，遍历其中的每个字符，统计其中包含 'e', 'i', 'o', 'u' 这几个字母的数量，并根据分配规则计算分配的金币数量。
3. 更新 distribution 字典中相应用户的金币数量。
4. 计算剩余金币数量并返回。
*/
